#ifndef _DEPENDENCY_H
#define _DEPENDENCY_H



#include <linux/time.h>
#include <linux/timer.h>
#include <linux/jiffies.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/version.h>
#include <linux/skbuff.h>
#include <linux/netfilter.h>
#include <linux/netfilter_ipv4.h>
#include <linux/ip.h>
#include <linux/tcp.h>
#include <linux/udp.h>
#include <linux/icmp.h>
#include <linux/spinlock.h>
#include <linux/rbtree.h>
#include"common.h"

#define CONN_NEEDLOG 0x10
#define CONN_MAX_SYM_NUM 3
#define CONN_EXPIRES 7 // 新建连接或已有连接刷新时的存活时长（秒）
#define CONN_NAT_TIMES 10 // NAT的超时时间倍率
#define CONN_ROLL_INTERVAL 5 // 定期清理超时连接的时间间隔（秒）
typedef unsigned int conn_key_t[CONN_MAX_SYM_NUM]; // 连接标识符，用于标明一个连接，可比较

typedef struct connNode {
    struct rb_node node;
    conn_key_t key; // 连接标识符
    unsigned long expires; // 超时时间
    u_int8_t protocol; // 协议，仅用于向用户展示
   

    struct NATRecord nat;  // 该连接对应的NAT记录
    int natType;           // NAT 转换类型
}connNode;

#define timeFromNow(plus) (jiffies + ((plus) * HZ))
#endif